home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 142 / Gekkan Dennou Club - 2000.3 Vol. 142 (Japan).7z / Gekkan Dennou Club - 2000.3 Vol. 142 (Japan) (Track 1).bin / tools / s_tool / _x250.c < prev    next >
Text File  |  1997-10-16  |  6KB  |  291 lines

  1. #include    "JX250.H"
  2. #include    <sys\iocs.h>
  3. #include    <sys\dos.h>
  4. #include    <sys\scsi.h>
  5. #include    <stdlib.h>
  6.  
  7.  
  8. //====== 環境ファイルに記録
  9. //--- SCSI ID
  10. int    SCSI_ID;
  11. //--- プリ座標
  12. int    PreX1,PreY1;
  13. int    PreX2,PreY2;    // 
  14. int    PreXV1,PreYV1;    // 表示座標に変換した物
  15. int    PreXV2,PreYV2;
  16. int    PreBai;        // 0;標準 1;x2 2;x3 3;x4
  17. int    PrePX,PrePY;    // 拡大表示の時のイメージ表示座標
  18. int    PreViewS;    // 0;画質。1;速度
  19. //--- スキャンサイズ
  20. int    ScanDpiX,ScanDpiY;
  21. int    ScanDotX,ScanDotY;
  22. int    ScanSpeed;    // 0;低速。1;速度
  23. //--- 補正
  24. int    Bright;        // 濃度
  25. int    LightM;        // 明度
  26. int    LightR;        // 明度
  27. int    LightG;        // 明度
  28. int    LightB;        // 明度
  29. int    GammaM;        // γ *100 の値
  30. int    GammaR;        // γ
  31. int    GammaG;        // γ
  32. int    GammaB;        // γ
  33. int    ThreM;        // しきい値
  34. int    ThreR;        // しきい値
  35. int    ThreG;        // しきい値
  36. int    ThreB;        // しきい値
  37. //--- モード
  38. int    ScanMode;    // スキャン値の単位 0;DPI 1;DOT
  39. int    PreUnit;    // プリスキャン値の単位 0;dot 1;cm 2;inch
  40. int    ImageMode;    // 0;カラー 1;白黒
  41. int    ImageColMode;    // 0;多値 1;二値
  42. int    ImageDirec;    // 0;縦 1;横
  43. int    PojiNegaMode;    // 0;ポジ 1;ネガ
  44. int    DropColor;    // 0;なし 1;R 2;G 3;B
  45. int    FullColor;    // 0;64k color  1;24bit color
  46. //--- JPEG
  47. UNchar    JpegSwc[128];    // Jpeg セーブの文字列
  48. //--- その他
  49. int    AspMode;    // 「画像」の 0;(2:3) 1;(1:1)
  50.  
  51. //====== 非記録
  52. //--- 
  53. UNchar    *ScanData;    //「画像」データのポインタ
  54. int    ScanDataX;    //「画像」の大きさ
  55. int    ScanDataY;    //「画像」の大きさ
  56. UNchar    *PreData;    // [(232)*(480)*2];    // 「プリスキャン」データ
  57.  
  58. //===
  59. UNshort    olgtcl[16];
  60. UNchar    diabak[165*205*2];    // ダイアログ用のバッファ
  61. int    orgerrvct;
  62. char    CUR_path[256];        /*起動時のパス*/
  63.  
  64. UNchar    *MAP;
  65.  
  66. void    END_DISP();
  67.  
  68. /*--------------------------------------------------*/
  69.  
  70. void main(ar,av)
  71. int    ar;
  72. UNchar    **av;
  73. {
  74. int    i,j,m,n,l,x,y,z,r,g,b;
  75. int    ssp;
  76. UNchar    *M,*N;
  77. UNchar    buf[256];
  78. UNchar    cnfn[256];
  79. int    matfg;
  80. int    ggcfg;
  81. matfg=0;
  82. ggcfg=0;
  83. printf( "X68k JX250 TOOL Version 1.00 Copyright 1997 満開製作所/TNB製作所\n" );
  84. //---- コマンドライン解析
  85. for(i=1;i<ar;i++){
  86.     if ( av[i][0]=='-' || av[i][0]=='/' ){
  87.         switch(av[i][1]|0x20){
  88.         case('s'):
  89.             PreViewS=1;    // 0;画質。1;速度
  90.             break;
  91.         case('x'):
  92.             FullColor=1;    // 0;64k color  1;24bit color
  93.             break;
  94.         case('i'):
  95.             //--- SCANNER ID
  96.             SCSI_ID=atoi(&av[i][2]);
  97.             break;
  98.         case('f'):
  99.             //--- コンフィグファイル指定
  100.             jstrcpy(cnfn,&av[i][2]);
  101.             break;
  102.         case('v'):
  103.             //--- MATIER の仮想画面に読み込む。環境変数`MATIER'が必要です。\n"
  104.             matfg=-1;
  105.             ggcfg=-1;
  106.             break;
  107.         case('c'):
  108.             ggcfg=-1;
  109.             break;
  110.         case('p'):
  111.         case('b'):
  112.         case('y'):
  113.             break;
  114.         case('h'):
  115.         case('?'):
  116.             Help();
  117.             return;
  118.         default:
  119.             printf(" スイッチが異常です。\n");
  120.             return;
  121.         }
  122.     } else {
  123.         printf(" コマンドラインが異常です。\n");
  124.         return;
  125.     }
  126. }
  127. //--- メモリ確保
  128. PreData=_dos_malloc( (232)*(480)*2 );    // 「プリスキャン」データ
  129. if ( PreData>=0x81000000 ){
  130.     i=PreData;
  131.     i&=0x00FFFFFF;
  132.     printf(" メモリが足りません。後 %d byte 必要です。\n",((232)*(480)*2)-i);
  133.     return;
  134. } else {
  135.     UNint    *MM;
  136.     MM=PreData;
  137.     for(i=0;i<((232)*(480)*2)/4;i++)
  138.         *MM++=0;
  139. }
  140. //--- MAT チェック
  141. mat_vadds=0;
  142. if ( matfg!=0 ){
  143.     if ( MatDefRead() ){
  144.         printf("\n [何かキーを押して下さい]\n");
  145.         _dos_kflushio(0xFF);
  146.         _dos_inkey();
  147.         _dos_kflushio(0xFF);
  148.         return;
  149.     }
  150. }
  151. //--- 画面準備
  152. GetDrvDir(0,CUR_path);
  153. GetDrvDir(0,Apath);
  154. //--- 画面準備
  155. orgerrvct=_dos_intvcs(0xFFF1,(void*)END_DISP);
  156. ssp=_iocs_b_super(0);
  157. for(i=0;i<16;i++)
  158.     olgtcl[i]=*(UNshort*)(0xe82200+i*2);
  159. if ( ssp>=0 )
  160.     _iocs_b_super(ssp);
  161. _iocs_tgusemd(0,2);
  162. _iocs_tgusemd(1,2);
  163. mouse(1);
  164. _dos_c_curoff();
  165. _iocs_crtmod(12);
  166. _iocs_g_clr_on();
  167. TXCLS(0);
  168. SetMsPat();
  169. MsPat(-1);
  170. //-------- 初期化
  171. SCSI_ID=0;
  172. ScanMode=0;
  173. ScanDotX=512*DOTB;
  174. ScanDotY=512*DOTB;
  175. PreX1=0;
  176. PreY1=0;
  177. PreX2=6000;
  178. PreY2=6000;
  179. LightM=0x8000;        // 明度
  180. LightR=0x8000;
  181. LightG=0x8000;
  182. LightB=0x8000;
  183. Bright=128;        // 濃度
  184. GammaM=100;        // γ
  185. GammaR=100;
  186. GammaG=100;
  187. GammaB=100;
  188. ThreM=128;        // しきい値
  189. ThreR=128;
  190. ThreG=128;
  191. ThreB=128;
  192. RecSavMode=1;        // 0;CUT 1;PIC 2;JPEG 3;PIC2 4;JPEG 5;RGB
  193. GrayPoint=15;    // グレイスケールの値
  194. MonoPoint=15;    // 二値化の値
  195. //--
  196. ChDrvDir(CUR_path);
  197. ReadCnf(0);
  198. //--
  199. InitScrren();
  200. //--------
  201. for(;;){
  202.     move();
  203.     if ( Dialog(0,"環境を記録しますか?",0,2)!=0 )
  204.         break;    // いいえ=おわり
  205.     ChDrvDir(CUR_path);
  206.     if ( CreateCnf(0)==0 )
  207.         break;    // 成功=おわり
  208.     i=Dialog(
  209.         "環境ファイルの書き出しに失",
  210.         "敗しました。終了してもよろ",
  211.         "しいですか?",
  212.         2
  213.     );
  214.     if ( i==0 )
  215.         break;    // よろしい=おわり
  216. }
  217. if ( ggcfg!=0 && ScanData!=0 ){
  218.     //printf(" 画面は残す~\n");
  219.     RecVwBai=0;
  220.     END_DISP_();
  221.     _iocs_b_wpoke(0xE82600,0x193F);
  222.     ScanGraphView(0,0,1);
  223.     return;
  224. }
  225. END_DISP();
  226. }
  227. /*****************************************
  228.     終わり
  229. **************************************/
  230. void    END_DISP()
  231. {
  232. _iocs_g_clr_on();
  233. _iocs_crtmod(16);
  234. _dos_c_fnkmod(0);
  235. egs_sub();
  236. END_DISP_();
  237. exit(0);
  238. }
  239. /*+++++++++++*/
  240. void    END_DISP_()
  241. {
  242. int    i,j,ssp;
  243. int    *a;
  244. TXCLS(1);    //全TEXT 掃除
  245. ssp=_iocs_b_super(0);
  246.     if ( olgtcl[15]!=0 ){
  247.         for(i=0;i<16;i++)
  248.             *(UNshort*)(0xe82200+i*2)=olgtcl[i];
  249.     }
  250.     *(UNchar*)0xe8e007&=0xFD;
  251. if ( ssp>=0 )
  252.     _iocs_b_super(ssp);
  253. _dos_c_curon();
  254. mouse(2);
  255. mouse(0);
  256. _dos_kflushio(0xFF);
  257. _dos_breakck(0);    /*break on*/
  258. _iocs_tgusemd(0,0);
  259. _iocs_tgusemd(1,1);
  260. _dos_intvcs(0xFFF1,orgerrvct);
  261. ChDrvDir(CUR_path);
  262. }
  263. /*****************************************
  264.     ヘルプ
  265. **************************************/
  266. void    Help()
  267. {
  268. printf(    "\n"
  269.     "[使用法] S_TOOL25.x [switch]\n"
  270.     "\n"
  271.     "  [switch]\n"
  272.     "    /V ・・・・・・・・・・・・ MATIER の仮想画面に読み込む。環境変数`MATIER'\n"
  273.     "            の設定が必要です。\n"
  274.     "    /C ・・・・・・・・・・・・ 終了時、グラフィック画面をクリアしない。\n"
  275. //    "    /A ・・・・・・・・・・・・ 起動後スキャニングし終了する。画像データは\n"
  276. //    "            VRAM に残る。\n"
  277. //    "    /1 ・・・・・・・・・・・・ 画像画面を 1:1 にする。\n"
  278.     "    /I[n] ・・・・・・・・・ JX250 の接続している SCSI-ID を指定。\n"
  279. //    "    /S ・・・・・・・・・・・・ プレスキャン、画像より速度を優先させる。\n"
  280.     "    /F[cnfname] ・・・ 環境ファイル名を指定。指定がない場合\n"
  281.     "            S_TOOL25.x と同じディレクトリの S_TOOL25.CNF\n"
  282.     "            を使用する。\n"
  283. //    "    /W[path] ・・・・・・ メモリがたりない場合のテンポラリファイルのパ\n"
  284. //    "            スを指定する。指定がない場合メモリ切れで中断\n"
  285. //    "            する\n"
  286.     "\n"
  287. //    "        環境変数`JX250'がコマンドラインに付加されます。\n"
  288. //    "\n"
  289. );
  290. }
  291.